package com.demo.behavioral.interpreter;

/**
 * 解释器模式
 * 应用场景：一般主要应用在OOP开发中的编译器的开发中，所以适用面比较窄。
 * 比如给定一个语言之后，解释器模式可以定义出其语法的一种表示，并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。
 * 优点：修改语法规则方面相当方便，只需修改解释器即可，不必对原来调用的代码做修改
 * 实现方式：1、定义一个抽象解释器的接口及其多个实现，该接口实现处理多个环境角色类。2、定义一个环境角色类，就是输入的参数类
 * @author allen
 *
 */
public class Test {
	
	public static void main(String[] args) {
		//以密文解释器破解CIA密文为例
		Ciphertext ciphertext = new Ciphertext("AA","SA","DA");
		Decoder safeCodeDecoder = new SafeCodeDecoder();
		Decoder dangerCodeDecoder = new DangerCodeDecoder();
		//调用各种解释器核对破解特工各种暗号、信号
		safeCodeDecoder.crackCode(ciphertext);
		dangerCodeDecoder.crackCode(ciphertext);
		
	}

}
